/**
 * @file   EventListener.java
 * @author Enrique Madrid <e.madrid@lpcsite.com>
 * @date   Mon Jul 16 12:18:01 2007
 * 
 *   Control de eventos notificados por el framework SIMP.
 * 
 * Las clases que desean atender las notificaciones del framework SIMP
 * deben implementar esta interface. el framework SIMP puede notificar
 * a una clase que implemente esta inteface cuando se presiona una
 * tecla, cuando se preciona ENTER sobre una control del tipo command 
 * (Button, menu, etc), o cuando una alarma programada ha expirado.
 */

package sim.framework;

import sim.framework.*;

public interface EventListener {

    public static final int TYPE_NONE = 0; // Reservado
    public static final int TYPE_NOTIFY = 1; // Eventos del sistema.
    public static final int TYPE_COMMAND = 2; // Eventos del GUI.

    /**
     * EventCodes - Codigo de eventos del usario
     * msg.getEventCode() devuelve el codigo del evento
     * 
     */
    public static final int ALARM = 1;
    public static final int SHOW = 2;
    public static final int HIDE = 3;
    public static final int KEY_PRESSED = 4;
    public static final int KEY_REPEATED = 5;
    public static final int KEY_RELEASED = 6;
    public static final int POINTER_PRESSED = 7;
    public static final int POINTER_DRAGGED = 8;
    public static final int POINTER_RELEASED = 9;
    public static final int PAINT = 10;
    public static final int REPAINT = 11;
    public static final int RENDERER = 12;
    public static final int COMMAND = 13;
    public static final int RESERVED = 14;
    public static final int TAB = 15;
    public static final int USER = 30;

    /**
     * EventCodes - Codigos de eventos del framework SIMP
     * 
     */
    public static final int ME = USER + 1;
    /// msg.getWParam() devuelve el identificador de la alarma programada.
    public static final int ME_ALARM = ME + 1;


    /** 
     *  Recibe las notificaciones del framework SIMP.
     * 
     * @param msg Parámetros enviados a la función.
     *            msg.getEventCode() devuelve el código del evento.
     *
     * 
     * @return Devuelve true si el evento fue atendido, false en caso contrario.
     */
    public boolean event(final Msg msg);
}
